2938
430
لدي هيكل:
بناء كلمةالبند
{
كلمة سلسلة
عدد كثافة العمليات
} ؛
أنا أقرأ في ملف نصي به العديد من الكلمات المختلفة وأقوم بتخزينها في مصفوفة.
ifstream inputFile ("data.txt") ؛
إذا (inputFile.is_open ())
{
while (getline (inputFile، data، "))
{
wordItemList [i] .word = البيانات ؛
أنا ++ ؛
}
}
سؤالي هو أفضل طريقة لحساب كل مرة تظهر فيها كلمة في المصفوفة. على سبيل المثال إذا كان ملف data.txt الخاص بي هو
الثعلب قفز من فوق السياج
أريد أن أكون قادرًا على تخزين عدد المرات التي تظهر فيها كل كلمة داخل البنية ضمن "عدد صحيح" ؛ 
ifstream inputFile ("data.txt") ؛
إذا (! inputFile.is_open ()) {
cerr << "لا يمكن فتح data.txt \ n" ؛
خروج (0) ؛
}
الخريطة  freq؛
while (getline (inputFile، word، "))
++ التكرار [كلمة] ؛
|
استخدم std :: multiset أو std :: unordered_multiset. يعتمد الأداء قليلاً على مجموعة البيانات الخاصة بك ، لذا يلزم إجراء بعض الضبط للعثور على الأفضل في الممارسة. قد يعمل شيء من هذا القبيل (يتكيف مع كود قراءة الملف الخاص بك):
# تضمين 
# تضمين 
انت مين() {
std :: unordered_multiset  dt؛
لـ (&& s: {"word1"، "word2"، "word1"}) {
dict.insert (ق) ؛
}
std :: cout <